ALC_ Alphabet Codes

The ALC_ constants enable a subset of the active character set, depending on the current language.

For example, the French language includes  h  in the lowercase alphabet. In the same way,     replaces  $  if ALC_MONETARY is set in British systems. For more information about alphabets, see  Specifying an Alphabet Set  in Chapter 8 and  Alphabet  in Chapter 5.

Comments

The following ALC_ constants are are supported:

Constant

Description

ALC_ALL

All characters except Japanese characters.

ALC_ALPHA

ALC_LCALPHA | ALC_UCALPHA.

ALC_ALPHANUMERIC

ALC_LCALPHA | ALC_UCALPHA | ALC_NUMERIC.

ALC_ASCII

Seven-bit characters ASCII #20-ASCII #0x7F

ALC_DBCS

Allow double-byte character set (DBCS) variety of single-byte character set (SBCS).

ALC_DEFAULT

Default value; uses complete set of recognizable char-acters and gestures. The set of these is defined by the recognizer. It is the set of characters at or above ALC_SYSMINIMUM that the recognizer can accurately distinguish.

If an application sets ALC_DEFAULT in the HRC object, and the recognizer is an alphanumeric system recognizer, the recognizer must at least support ALC_SYSMINIMUM as a default. ALC_DEFAULT should be the same character set as the complete character set for the given language minus the ALC_OTHER characters.

If an application combines ALC_DEFAULT with other ALC_ values, ALC_DEFAULT is ignored.

ALC_GESTURE

Gestures.

ALC_GLOBALPRIORITY

Specifies that the global recognition priorities (from Tool Palette) are to be used during recognition. An application can control its own recognition priority in a control by clearing this flag and then setting its own priorities in the HRC.

ALC_HIRAGANA

Hiragana characters. (Japanese version only.)

ALC_JIS1

All Kanji Shift JIS level 1 characters. (Japanese version only.)

ALC_KANJI

Kanji characters, Shift JIS levels 1, 2, and 3. (Japanese version only.)

ALC_KANJIALL

ALC_ALL | ALC_HIRAGANA | ALC_KATAKANA | ALC_KANJI. (Japanese version only.)

ALC_KANJISYSMINIMUM

Minimum set of characters needed for Japanese system recognizer. Same as ALC_SYSMINIMUM | ALC_HIRAGANA | ALC_KATAKANA | ALC_JIS1. (Japanese version only.)

ALC_KATAKANA

Katakana characters. (Japanese version only.)

ALC_LCALPHA

Lowercase letters a-z.

ALC_MATH

Math symbols:  %^*()-+={ }<>,/.

ALC_MONETARY

Monetary symbols:  ,.$ or appropriate currency desig-nation such as the yen or pound sterling symbol, accord-ing to the current language setting.

ALC_NONPRINT

Space, tab, carriage-return, and control glyphs.

ALC_NOPRIORITY

No priority. This value means the application has no preference for one type of symbol over another.

ALC_NUMERIC

Numerals 0-9.

ALC_OEM

Bits reserved for recognizer capabilities specific to the original equipment manufacturer (OEM).

ALC_OTHER

Other symbols:  @ # | _ ~ [ ]. That is, all other symbols not included in ALC_ALPHANUMERIC, ALC_MONETARY, ALC_MATH, and ALC_PUNC.

ALC_PUNC

Punctuation:  !-;`"?()&.,\.

ALC_RESERVED

Reserved.

ALC_SYSMINIMUM

Minimum set of characters needed for Roman alphabet system recognizers:  ALPHANUMERIC | ALC_PUNC | ALC_WHITE | ALC_GEST.

ALC_UCALPHA

Uppercase letters A-Z.

ALC_USEBITMAP

(Description follows table.)

ALC_WHITE

White space. If this value is not set in the HRC object, the recognizer should ignore any white space left between characters. Thus, ALC_WHITE is included in the ALC_DEFAULT. For example, in the zip code field of the Hform sample application, where ALC_NUMERIC | ALC_GESTURE is set, the user does not have to worry about getting any extraneous spaces.

 

If ALC_USEBITMAP is set, it indicates the recognizer should adopt an alphabet set defined by the application. The defined set specifies individual characters of an alphabet by setting bits in a 256-bit bitfield. The lowest bit corresponds to the first character of the alphabet, the second bit to the second character, and so forth.

An application passes the bitfield to a recognizer through the SetAlphabetHRC1AOCS7 or SetBoxAlphabetHRC1AOCS9 functions. The following code shows how. Assume the array rgbfSet holds the desired bit values.

HRC     hrc;                         // HRC handle

BYTE    rgbfSet[cbRcrgbfAlcMax]      // 256-bit bitfield

 

SetAlphabetHRC( hrc, ALC_USEBITMAP, (LPBYTE) rgbSet );

 

ALC_USEBITMAP can be combined with other ALC_ values using the bitwise-OR operator. An application can thus, for example, select certain letters with a defined bitmap and combine them with all numerals and punctuation.

For Asian languages other than Japanese, refer to the appropriate subsets within the language: phonetic symbols for words within the language, phonetic symbols for words outside the language, and native pictographs. For example, in Korean, ALC_HANGUEL equals ALC_KATAKANA, and ALC_HANJA equals ALC_KANJI.

For kanji and other Asian encodings, different effects are possible depending on the state of ALC_DBCS. These effects are described in the following table.

Character in

ALC_DBCS = 0

ALC_DBCS = 1

ALC_HIRAGANA

N/A

Shift JIS characters 0x8154, 0x8155, and 0x829F - 0x82F1.

ALC_JIS1

N/A

All Kanji Shift JIS level 1 characters.

ALC_KATAKANA

0xA1 - 0xDF

Shift JIS characters 0x814A, 0x814B, 0x8152, 0x8153, 0x815B, and 0x8340 - 0x8396.

ALC_KANJI

N/A

All Kanji characters, Shift JIS levels 1, 2, and 3.

 

The following table shows the characters in Shift-JIS in each ALC_ set supported in the Japanese version:

ALC_ value

Shift JIS Code

ALC_HIRAGANA

 0x8154, 0x8155, and 0x829F - 0x82F1

ALC_JIS1

0x8156 - 0x815A, 0x889F - 0x9872

ALC_KANJI

0x8156 - 0x815A, 0x889F - 0xEAA4, 0xED40 - 0xEDFC, 0xEE40 - 0xEEFC, 0xF040 - 0xF9FC, 0xFAF0 - 0xFAFC, 0xFB40 - 0xFBFC, 0xFC40 - 0xFC4B

ALC_KATAKANA

0x814A, 0x814B, 0x8152, 0x8153, 0x815B, 0x8340 - 0x8396

ALC_LCALPHA

0x8281 - 0x829A

ALC_MATH

0x8143, 0x8144, 0x814F, 0x815E, 0x8169, 0x816A, 0x816F, 0x8170, 0x817B - 0x817E, 0x8180 - 0x8188, 0x8193, 0x8196

ALC_MONETARY

0x8143, 0x8144, 0x818F - 0x8192

ALC_NONPRINT

0x8140

ALC_NUMERIC

0x824F - 0x8258

ALC_OTHER

0x814C - 0x814E, 0x8150, 0x8151, 0x8160 - 0x8164, 0x816B, 0x816C, 0x8171 - 0x8174, 0x8179, 0x817A, 0x817F,  0x8189 - 0x818E, 0x8194, 0x8197 - 0x81FC, 0x8240 - 0x824E, 0x8259 - 0x825F, 0x827A - 0x8280, 0x829B - 0x829E, 0x82F2 - 0x82FC, 0x837F, 0x897 - 0x83FC, 0x8840 - 0x84FC, 0x8740 - 0x879D 

ALC_PUNC

0x8141 - 0x8149, 0x815B - 0x815F, 0x8165 - 0x816A, 0x816D - 0x8170, 0x8175 - 0x8178, 0x817C, 0x8195

ALC_UCALPHA

0x8260 - 0x8279

ALC_WHITE

0x8140

 

A recognizer must not return a symbol value outside the specified subset. However, a recognizer does not have to force a match to the subset; it can instead return  unknown  if a suitable match is not found.

You can set the ALC_ value for an hedit or bedit control in a dialog box by insert-ing a special string in the .RC file s CONTROL statement. This string is in the form ALC<xxxx> where xxxx represents a case-independent hexadecimal ALC_ code, without a preceding 0x qualifier. You can append normal window text after the ALC_ entry.

The following line demonstrates setting the ALC_ value for an hedit control using a CONTROL statement:

CONTROL "ALC<402C>Dollars", IDD_PAID, "hedit", ES_LEFT | ... etc.

 

In the above example, the ALC<402C> value is stripped out with  Dollars  left as window text. The number 402C is the hexadecimal equivalent of:

ALC_NUMERIC | ALC_PUNC | ALC_MONETARY | ALC_GESTURE

 

The following example allows only kanji characters, katakana characters, and gestures; it does not specify initial window text:

CONTROL "ALC<74000>", IDD_J, "hedit", ES_LEFT | ... etc.